<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: sample_consensus/include/pcl/sample_consensus/sac_model.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('sample__consensus_2include_2pcl_2sample__consensus_2sac__model_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">sac_model.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Software License Agreement (BSD License)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> *  Point Cloud Library (PCL) - www.pointclouds.org</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *  Copyright (c) 2010-2011, Willow Garage, Inc.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *  Copyright (c) 2012-, Open Perception, Inc.</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *  </span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *  All rights reserved.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *  Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *  modification, are permitted provided that the following conditions</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *  are met:</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *   * Redistributions of source code must retain the above copyright</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *     notice, this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *   * Redistributions in binary form must reproduce the above</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *     copyright notice, this list of conditions and the following</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *     disclaimer in the documentation and/or other materials provided</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *     with the distribution.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *   * Neither the name of the copyright holder(s) nor the names of its</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *     contributors may be used to endorse or promote products derived</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *     from this software without specific prior written permission.</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> *  &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> *  POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment"> * $Id$</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#ifndef PCL_SAMPLE_CONSENSUS_MODEL_H_</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#define PCL_SAMPLE_CONSENSUS_MODEL_H_</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;cfloat&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;ctime&gt;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;limits.h&gt;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;pcl/console/print.h&gt;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;pcl/point_cloud.h&gt;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;pcl/sample_consensus/boost.h&gt;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;pcl/sample_consensus/model_types.h&gt;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#include &lt;pcl/search/search.h&gt;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keyword">namespace </span>pcl</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>ProgressiveSampleConsensus;</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>T&gt;</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html">   66</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classpcl_1_1_sample_consensus_model.html">SampleConsensusModel</a></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  {</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">public</span>:</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt;PointT&gt;</a> <a class="code" href="classpcl_1_1_point_cloud.html">PointCloud</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> pcl::PointCloud&lt;PointT&gt;::ConstPtr PointCloudConstPtr;</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> pcl::PointCloud&lt;PointT&gt;::Ptr PointCloudPtr;</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> pcl::search::Search&lt;PointT&gt;::Ptr SearchPtr;</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;      <span class="keyword">typedef</span> boost::shared_ptr&lt;SampleConsensusModel&gt; Ptr;</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;      <span class="keyword">typedef</span> boost::shared_ptr&lt;const SampleConsensusModel&gt; ConstPtr;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a910f3f0d75a6c2bf8bc4a9c43df825ce">   81</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a910f3f0d75a6c2bf8bc4a9c43df825ce">SampleConsensusModel</a> (<span class="keywordtype">bool</span> random = <span class="keyword">false</span>) </div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        : <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a> ()</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a> ()</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">radius_min_</a> (-std::numeric_limits&lt;double&gt;::max ())</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        , radius_max_ (std::numeric_limits&lt;double&gt;::max ())</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a> (0.)</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">samples_radius_search_</a> ()</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> ()</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a> ()</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a> (new boost::uniform_int&lt;&gt; (0, std::numeric_limits&lt;int&gt;::max ()))</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a> ()</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">error_sqr_dists_</a> ()</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      {</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="comment">// Create a random number generator object</span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keywordflow">if</span> (random)</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>.seed (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::time(0)));</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>.seed (12345u);</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a>.reset (<span class="keyword">new</span> boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_int&lt;&gt; &gt; (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>, *<a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a>)); </div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;       }</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keyword">public</span>:</div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#aa99d99ea0457237eca3b2f8e9a39022b">  108</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#aa99d99ea0457237eca3b2f8e9a39022b">SampleConsensusModel</a> (<span class="keyword">const</span> PointCloudConstPtr &amp;cloud, <span class="keywordtype">bool</span> random = <span class="keyword">false</span>) </div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        : <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a> ()</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a> ()</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">radius_min_</a> (-std::numeric_limits&lt;double&gt;::max ())</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        , radius_max_ (std::numeric_limits&lt;double&gt;::max ())</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a> (0.)</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">samples_radius_search_</a> ()</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> ()</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a> ()</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a> (new boost::uniform_int&lt;&gt; (0, std::numeric_limits&lt;int&gt;::max ()))</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a> ()</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">error_sqr_dists_</a> ()</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      {</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keywordflow">if</span> (random)</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>.seed (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::time (0)));</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>.seed (12345u);</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="comment">// Sets the input cloud and creates a vector of &quot;fake&quot; indices</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#aae3b06fbee5243f926d40f8115bd406c">setInputCloud</a> (cloud);</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <span class="comment">// Create a random number generator object</span></div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a>.reset (<span class="keyword">new</span> boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_int&lt;&gt; &gt; (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>, *<a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a>)); </div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      }</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a3fd6d364bc52a69c6aff54691975b7aa">  138</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3fd6d364bc52a69c6aff54691975b7aa">SampleConsensusModel</a> (<span class="keyword">const</span> PointCloudConstPtr &amp;cloud, </div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;                            <span class="keyword">const</span> std::vector&lt;int&gt; &amp;indices, </div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;                            <span class="keywordtype">bool</span> random = <span class="keyword">false</span>) </div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        : <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a> (cloud)</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a> (new std::vector&lt;int&gt; (indices))</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">radius_min_</a> (-std::numeric_limits&lt;double&gt;::max ())</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        , radius_max_ (std::numeric_limits&lt;double&gt;::max ())</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a> (0.)</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">samples_radius_search_</a> ()</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> ()</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a> ()</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a> (new boost::uniform_int&lt;&gt; (0, std::numeric_limits&lt;int&gt;::max ()))</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a> ()</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        , <a class="code" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">error_sqr_dists_</a> ()</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      {</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        <span class="keywordflow">if</span> (random)</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>.seed (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::time(0)));</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>.seed (12345u);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;size () &gt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a>-&gt;points.size ())</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        {</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;          PCL_ERROR (<span class="stringliteral">&quot;[pcl::SampleConsensusModel] Invalid index vector given with size %lu while the input PointCloud has size %lu!\n&quot;</span>, <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;size (), <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a>-&gt;points.size ());</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;clear ();</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        }</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> = *<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>;</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        <span class="comment">// Create a random number generator object</span></div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a>.reset (<span class="keyword">new</span> boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_int&lt;&gt; &gt; (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>, *<a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a>)); </div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;       };</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a6fd82ae7fce7b90406608b8db249acd1">  170</a></span>&#160;      <span class="keyword">virtual</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#a6fd82ae7fce7b90406608b8db249acd1">~SampleConsensusModel</a> () {};</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a2ae178816daf4f2c7af3a19d12324b77">  178</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a2ae178816daf4f2c7af3a19d12324b77">getSamples</a> (<span class="keywordtype">int</span> &amp;iterations, std::vector&lt;int&gt; &amp;samples)</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      {</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        <span class="comment">// We&#39;re assuming that indices_ have already been set in the constructor</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;size () &lt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#aff175b4323080fe1a3ca98a76ca4da46">getSampleSize</a> ())</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        {</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;          PCL_ERROR (<span class="stringliteral">&quot;[pcl::SampleConsensusModel::getSamples] Can not select %lu unique points out of %lu!\n&quot;</span>,</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                     samples.size (), <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;          <span class="comment">// one of these will make it stop :)</span></div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;          samples.clear ();</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;          iterations = INT_MAX - 1;</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;          <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        }</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="comment">// Get a second point which is different than the first</span></div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        samples.resize (<a class="code" href="classpcl_1_1_sample_consensus_model.html#aff175b4323080fe1a3ca98a76ca4da46">getSampleSize</a> ());</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = 0; iter &lt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#a19d4a467b5c0cd6267e6282ac0a2cf8c">max_sample_checks_</a>; ++iter)</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        {</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;          <span class="comment">// Choose the random indices</span></div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a> &lt; std::numeric_limits&lt;double&gt;::epsilon ())</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;              <a class="code" href="classpcl_1_1_sample_consensus_model.html#a2f687798633c8e702568aea8d68b2bec">SampleConsensusModel&lt;PointT&gt;::drawIndexSample</a> (samples);</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;              <a class="code" href="classpcl_1_1_sample_consensus_model.html#a94696e418be704a4443b031ca18bc298">SampleConsensusModel&lt;PointT&gt;::drawIndexSampleRadius</a> (samples);</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160; </div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;          <span class="comment">// If it&#39;s a good sample, stop here</span></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ac38e3dc90b66bacc563605a31901ac55">isSampleGood</a> (samples))</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;          {</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;            PCL_DEBUG (<span class="stringliteral">&quot;[pcl::SampleConsensusModel::getSamples] Selected %lu samples.\n&quot;</span>, samples.size ());</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          }</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        }</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        PCL_DEBUG (<span class="stringliteral">&quot;[pcl::SampleConsensusModel::getSamples] WARNING: Could not select %d sample points in %d iterations!\n&quot;</span>, <a class="code" href="classpcl_1_1_sample_consensus_model.html#aff175b4323080fe1a3ca98a76ca4da46">getSampleSize</a> (), <a class="code" href="classpcl_1_1_sample_consensus_model.html#a19d4a467b5c0cd6267e6282ac0a2cf8c">max_sample_checks_</a>);</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        samples.clear ();</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;      }</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> </div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a76c5d4484f1c08a9a15f03e497296cfe">  220</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a76c5d4484f1c08a9a15f03e497296cfe">computeModelCoefficients</a> (<span class="keyword">const</span> std::vector&lt;int&gt; &amp;samples, </div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                                Eigen::VectorXf &amp;model_coefficients) = 0;</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160; </div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a667767897fbfe615aeeb9eca8dd1b8c6">  234</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a667767897fbfe615aeeb9eca8dd1b8c6">optimizeModelCoefficients</a> (<span class="keyword">const</span> std::vector&lt;int&gt; &amp;inliers, </div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                                 <span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients,</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;                                 Eigen::VectorXf &amp;optimized_coefficients) = 0;</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#adc4ab752a4819218988ff5429b5a3c06">  244</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#adc4ab752a4819218988ff5429b5a3c06">getDistancesToModel</a> (<span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients, </div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                           std::vector&lt;double&gt; &amp;distances) = 0;</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160; </div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#af9aefc3c3ab13ede1430c680e9243d26">  256</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#af9aefc3c3ab13ede1430c680e9243d26">selectWithinDistance</a> (<span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients, </div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;                            <span class="keyword">const</span> <span class="keywordtype">double</span> threshold,</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                            std::vector&lt;int&gt; &amp;inliers) = 0;</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a4257edca979112fb2a7b5dfc4b824ca2">  270</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4257edca979112fb2a7b5dfc4b824ca2">countWithinDistance</a> (<span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients, </div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;                           <span class="keyword">const</span> <span class="keywordtype">double</span> threshold) = 0;</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a34c480d48be740e6085e8ba59c7293ed">  282</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a34c480d48be740e6085e8ba59c7293ed">projectPoints</a> (<span class="keyword">const</span> std::vector&lt;int&gt; &amp;inliers, </div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;                     <span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients,</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                     <a class="code" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;projected_points, </div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;                     <span class="keywordtype">bool</span> copy_data_fields = <span class="keyword">true</span>) = 0;</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> </div>
<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ab36a50dd4848b902f2e7a75b29b78c76">  296</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#ab36a50dd4848b902f2e7a75b29b78c76">doSamplesVerifyModel</a> (<span class="keyword">const</span> std::set&lt;int&gt; &amp;indices, </div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                            <span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients, </div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;                            <span class="keyword">const</span> <span class="keywordtype">double</span> threshold) = 0;</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#aae3b06fbee5243f926d40f8115bd406c">  304</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#aae3b06fbee5243f926d40f8115bd406c">setInputCloud</a> (<span class="keyword">const</span> PointCloudConstPtr &amp;cloud)</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      {</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a> = cloud;</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>)</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>.reset (<span class="keyword">new</span> std::vector&lt;int&gt; ());</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;empty ())</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        {</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;          <span class="comment">// Prepare a set of indices to be used (entire cloud)</span></div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;          <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>-&gt;resize (cloud-&gt;points.size ());</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; cloud-&gt;points.size (); ++i) </div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;            (*<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>)[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (i);</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        }</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> = *<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>;</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;       }</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;      <span class="keyword">inline</span> PointCloudConstPtr </div>
<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a41226f6ed6de6db5ea190f265f520fc9">  321</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a41226f6ed6de6db5ea190f265f520fc9">getInputCloud</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a>); }</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a4d9b6652b63eacd8c0ae1fb3a3eafa25">  327</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4d9b6652b63eacd8c0ae1fb3a3eafa25">setIndices</a> (<span class="keyword">const</span> boost::shared_ptr &lt;std::vector&lt;int&gt; &gt; &amp;indices) </div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;      { </div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a> = indices; </div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> = *<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>;</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;       }</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160; </div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a6d23c173237ca4be1451182b9a84b3ac">  337</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a6d23c173237ca4be1451182b9a84b3ac">setIndices</a> (<span class="keyword">const</span> std::vector&lt;int&gt; &amp;indices) </div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      { </div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>.reset (<span class="keyword">new</span> std::vector&lt;int&gt; (indices));</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a> = indices;</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;       }</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160; </div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      <span class="keyword">inline</span> boost::shared_ptr &lt;std::vector&lt;int&gt; &gt; </div>
<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a7b59467495bbcc1e6ba1b69bbd6c4206">  345</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7b59467495bbcc1e6ba1b69bbd6c4206">getIndices</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>); }</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160; </div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;      <span class="keyword">virtual</span> SacModel </div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a2c2824f82edf6564ba8a0160526992f0">  349</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a2c2824f82edf6564ba8a0160526992f0">getModelType</a> () <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;      <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp;</div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a490884cb22bfa92325111bd5be0bbe96">  353</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a490884cb22bfa92325111bd5be0bbe96">getClassName</a> ()<span class="keyword"> const</span></div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="keyword">      </span>{</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ab10fd6af7c7ab78040d4f638a572943f">model_name_</a>);</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;      }</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160; </div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#aff175b4323080fe1a3ca98a76ca4da46">  360</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#aff175b4323080fe1a3ca98a76ca4da46">getSampleSize</a> ()<span class="keyword"> const</span></div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="keyword">      </span>{</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#a64854cad238a0583093c446dc295f245">sample_size_</a>;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;      }</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a35884d269a39055c962b24d1db5fa97d">  367</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a35884d269a39055c962b24d1db5fa97d">getModelSize</a> ()<span class="keyword"> const</span></div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="keyword">      </span>{</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#ab7f51bf1c63fcfb05694d0f19c2f7dc3">model_size_</a>;</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;      }</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a3ed94271a12d7903c0bee9091e9a8f95">  379</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3ed94271a12d7903c0bee9091e9a8f95">setRadiusLimits</a> (<span class="keyword">const</span> <span class="keywordtype">double</span> &amp;min_radius, <span class="keyword">const</span> <span class="keywordtype">double</span> &amp;max_radius)</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;      {</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">radius_min_</a> = min_radius;</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        radius_max_ = max_radius;</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;      }</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#acff95be7097cf723a598d3b28e828487">  392</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#acff95be7097cf723a598d3b28e828487">getRadiusLimits</a> (<span class="keywordtype">double</span> &amp;min_radius, <span class="keywordtype">double</span> &amp;max_radius)</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;      {</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        min_radius = <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">radius_min_</a>;</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        max_radius = radius_max_;</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      }</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      </div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#af9eea9dd0e12e1de8671ac542400d3f1">  403</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#af9eea9dd0e12e1de8671ac542400d3f1">setSamplesMaxDist</a> (<span class="keyword">const</span> <span class="keywordtype">double</span> &amp;radius, SearchPtr search)</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;      {</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a> = radius;</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">samples_radius_search_</a> = search;</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;      }</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a1aebacea0f2bdd7529f48f739f11c6c0">  414</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a1aebacea0f2bdd7529f48f739f11c6c0">getSamplesMaxDist</a> (<span class="keywordtype">double</span> &amp;radius)</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;      {</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        radius = <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a>;</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;      }</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160; </div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;      <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classpcl_1_1_progressive_sample_consensus.html">ProgressiveSampleConsensus</a>&lt;<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&gt;;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160; </div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">double</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a2ac96856f60671f5d56be00a174963a8">  425</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a2ac96856f60671f5d56be00a174963a8">computeVariance</a> (<span class="keyword">const</span> std::vector&lt;double&gt; &amp;error_sqr_dists)</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;      {</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;        std::vector&lt;double&gt; dists (error_sqr_dists);</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> medIdx = dists.size () &gt;&gt; 1;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        std::nth_element (dists.begin (), dists.begin () + medIdx, dists.end ());</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordtype">double</span> median_error_sqr = dists[medIdx];</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        <span class="keywordflow">return</span> (2.1981 * median_error_sqr);</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      }</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160; </div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">double</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ad3de5bb66de04a4f0b3bc014a0676d48">  439</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad3de5bb66de04a4f0b3bc014a0676d48">computeVariance</a> ()</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;      {</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">error_sqr_dists_</a>.empty ())</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        {</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;          PCL_ERROR (<span class="stringliteral">&quot;[pcl::SampleConsensusModel::computeVariance] The variance of the Sample Consensus model distances cannot be estimated, as the model has not been computed yet. Please compute the model first or at least run selectWithinDistance before continuing. Returning NAN!\n&quot;</span>);</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;          <span class="keywordflow">return</span> (std::numeric_limits&lt;double&gt;::quiet_NaN ());</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        }</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ad3de5bb66de04a4f0b3bc014a0676d48">computeVariance</a> (<a class="code" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">error_sqr_dists_</a>));</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;      }</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160; </div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160; </div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a2f687798633c8e702568aea8d68b2bec">  455</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a2f687798633c8e702568aea8d68b2bec">drawIndexSample</a> (std::vector&lt;int&gt; &amp;sample)</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;      {</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        <span class="keywordtype">size_t</span> sample_size = sample.size ();</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        <span class="keywordtype">size_t</span> index_size = <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>.size ();</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; sample_size; ++i)</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;          <span class="comment">// The 1/(RAND_MAX+1.0) trick is when the random numbers are not uniformly distributed and for small modulo</span></div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;          <span class="comment">// elements, that does not matter (and nowadays, random number generators are good)</span></div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;          <span class="comment">//std::swap (shuffled_indices_[i], shuffled_indices_[i + (rand () % (index_size - i))]);</span></div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;          std::swap (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[i], <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[i + (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ab8b77e6a4edb210c2ddaca923ac8470a">rnd</a> () % (index_size - i))]);</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        std::copy (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>.begin (), <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>.begin () + sample_size, sample.begin ());</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;      }</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a94696e418be704a4443b031ca18bc298">  472</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#a94696e418be704a4443b031ca18bc298">drawIndexSampleRadius</a> (std::vector&lt;int&gt; &amp;sample)</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;      {</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <span class="keywordtype">size_t</span> sample_size = sample.size ();</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="keywordtype">size_t</span> index_size = <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>.size ();</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; </div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        std::swap (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[0], <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[0 + (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ab8b77e6a4edb210c2ddaca923ac8470a">rnd</a> () % (index_size - 0))]);</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="comment">//const PointT&amp; pt0 = (*input_)[shuffled_indices_[0]];</span></div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160; </div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        std::vector&lt;int&gt; indices;</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;        std::vector&lt;float&gt; sqr_dists;</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160; </div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;        <span class="comment">// If indices have been set when the search object was constructed,</span></div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        <span class="comment">// radiusSearch() expects an index into the indices vector as its</span></div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        <span class="comment">// first parameter. This can&#39;t be determined efficiently, so we use</span></div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        <span class="comment">// the point instead of the index.</span></div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        <span class="comment">// Returned indices are converted automatically.</span></div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">samples_radius_search_</a>-&gt;radiusSearch (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a>-&gt;at(<a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[0]),</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                                              <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a>, indices, sqr_dists );</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; </div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        <span class="keywordflow">if</span> (indices.size () &lt; sample_size - 1)</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        {</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;          <span class="comment">// radius search failed, make an invalid model</span></div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;          <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; sample_size; ++i)</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;            <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[i] = <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[0];</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        }</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        {</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; sample_size-1; ++i)</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;            std::swap (indices[i], indices[i + (<a class="code" href="classpcl_1_1_sample_consensus_model.html#ab8b77e6a4edb210c2ddaca923ac8470a">rnd</a> () % (indices.size () - i))]);</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; sample_size; ++i)</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;            <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>[i] = indices[i-1];</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;        }</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160; </div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        std::copy (<a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>.begin (), <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>.begin () + sample_size, sample.begin ());</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;      }</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; </div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ad22a9cfdd9cf08bcf85ef1e88b62b9d2">  516</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad22a9cfdd9cf08bcf85ef1e88b62b9d2">isModelValid</a> (<span class="keyword">const</span> Eigen::VectorXf &amp;model_coefficients)</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;      {</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;        <span class="keywordflow">if</span> (model_coefficients.size () != <a class="code" href="classpcl_1_1_sample_consensus_model.html#ab7f51bf1c63fcfb05694d0f19c2f7dc3">model_size_</a>)</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        {</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;          PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::isModelValid] Invalid number of model coefficients given (%lu)!\n&quot;</span>, <a class="code" href="classpcl_1_1_sample_consensus_model.html#a490884cb22bfa92325111bd5be0bbe96">getClassName</a> ().c_str (), model_coefficients.size ());</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;          <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        }</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;      }</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160; </div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ac38e3dc90b66bacc563605a31901ac55">  531</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#ac38e3dc90b66bacc563605a31901ac55">isSampleGood</a> (<span class="keyword">const</span> std::vector&lt;int&gt; &amp;samples) <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160; </div>
<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ab10fd6af7c7ab78040d4f638a572943f">  534</a></span>&#160;      std::string <a class="code" href="classpcl_1_1_sample_consensus_model.html#ab10fd6af7c7ab78040d4f638a572943f">model_name_</a>;</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160; </div>
<div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">  537</a></span>&#160;      PointCloudConstPtr <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">input_</a>;</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160; </div>
<div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">  540</a></span>&#160;      boost::shared_ptr &lt;std::vector&lt;int&gt; &gt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">indices_</a>;</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a19d4a467b5c0cd6267e6282ac0a2cf8c">  543</a></span>&#160;      <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#a19d4a467b5c0cd6267e6282ac0a2cf8c">max_sample_checks_</a> = 1000;</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160; </div>
<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">  548</a></span>&#160;      <span class="keywordtype">double</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">radius_min_</a>, radius_max_;</div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160; </div>
<div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">  551</a></span>&#160;      <span class="keywordtype">double</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">samples_radius_</a>;</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160; </div>
<div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">  554</a></span>&#160;      SearchPtr <a class="code" href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">samples_radius_search_</a>;</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160; </div>
<div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">  557</a></span>&#160;      std::vector&lt;int&gt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">shuffled_indices_</a>;</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160; </div>
<div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">  560</a></span>&#160;      boost::mt19937 <a class="code" href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">rng_alg_</a>;</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160; </div>
<div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">  563</a></span>&#160;      boost::shared_ptr&lt;boost::uniform_int&lt;&gt; &gt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">rng_dist_</a>;</div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160; </div>
<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">  566</a></span>&#160;      boost::shared_ptr&lt;boost::variate_generator&lt; boost::mt19937&amp;, boost::uniform_int&lt;&gt; &gt; &gt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a>;</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">  569</a></span>&#160;      std::vector&lt;double&gt; <a class="code" href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">error_sqr_dists_</a>;</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160; </div>
<div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#a64854cad238a0583093c446dc295f245">  572</a></span>&#160;      <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#a64854cad238a0583093c446dc295f245">sample_size_</a>;</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160; </div>
<div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ab7f51bf1c63fcfb05694d0f19c2f7dc3">  575</a></span>&#160;      <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_sample_consensus_model.html#ab7f51bf1c63fcfb05694d0f19c2f7dc3">model_size_</a>;</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160; </div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model.html#ab8b77e6a4edb210c2ddaca923ac8470a">  579</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model.html#ab8b77e6a4edb210c2ddaca923ac8470a">rnd</a> ()</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;      {</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;        <span class="keywordflow">return</span> ((*<a class="code" href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">rng_gen_</a>) ());</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;      }</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <span class="keyword">public</span>:</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;      EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160; };</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160; </div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>T, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>NT&gt;</div>
<div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html">  591</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html">SampleConsensusModelFromNormals</a> <span class="comment">//: public SampleConsensusModel&lt;PointT&gt;</span></div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  {</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    <span class="keyword">public</span>:</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> pcl::PointCloud&lt;PointNT&gt;::ConstPtr PointCloudNConstPtr;</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> pcl::PointCloud&lt;PointNT&gt;::Ptr PointCloudNPtr;</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160; </div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;      <span class="keyword">typedef</span> boost::shared_ptr&lt;SampleConsensusModelFromNormals&gt; Ptr;</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;      <span class="keyword">typedef</span> boost::shared_ptr&lt;const SampleConsensusModelFromNormals&gt; ConstPtr;</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160; </div>
<div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#aac33c2093acaca505d27397c0cc0af71">  601</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#aac33c2093acaca505d27397c0cc0af71">SampleConsensusModelFromNormals</a> () : <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#ae21dd06dfc1c624f72925edff6c882e4">normal_distance_weight_</a> (0.0), <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a5518bb7163a19fbc4a79d76f03742c0b">normals_</a> () {};</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160; </div>
<div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#a010f51999fde7c867ea2a6b53a7887b8">  604</a></span>&#160;      <span class="keyword">virtual</span> <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a010f51999fde7c867ea2a6b53a7887b8">~SampleConsensusModelFromNormals</a> () {}</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160; </div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#a490b2a89f60d8fafa2c7fd6b8f761c85">  612</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a490b2a89f60d8fafa2c7fd6b8f761c85">setNormalDistanceWeight</a> (<span class="keyword">const</span> <span class="keywordtype">double</span> w) </div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;      { </div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#ae21dd06dfc1c624f72925edff6c882e4">normal_distance_weight_</a> = w; </div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;      }</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160; </div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">double</span> </div>
<div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#a3d5c831e4e7469f3b2e30ab9cad559b3">  619</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a3d5c831e4e7469f3b2e30ab9cad559b3">getNormalDistanceWeight</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#ae21dd06dfc1c624f72925edff6c882e4">normal_distance_weight_</a>); }</div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160; </div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#a8945c93d6a5f7b436b527794888ec1be">  627</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a8945c93d6a5f7b436b527794888ec1be">setInputNormals</a> (<span class="keyword">const</span> PointCloudNConstPtr &amp;normals) </div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;      { </div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a5518bb7163a19fbc4a79d76f03742c0b">normals_</a> = normals; </div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;      }</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160; </div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;      <span class="keyword">inline</span> PointCloudNConstPtr </div>
<div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#af878ad2a4bb4badec569eb51d94d5a0d">  634</a></span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#af878ad2a4bb4badec569eb51d94d5a0d">getInputNormals</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a5518bb7163a19fbc4a79d76f03742c0b">normals_</a>); }</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160; </div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#ae21dd06dfc1c624f72925edff6c882e4">  640</a></span>&#160;      <span class="keywordtype">double</span> <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#ae21dd06dfc1c624f72925edff6c882e4">normal_distance_weight_</a>;</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; </div>
<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="classpcl_1_1_sample_consensus_model_from_normals.html#a5518bb7163a19fbc4a79d76f03742c0b">  645</a></span>&#160;      PointCloudNConstPtr <a class="code" href="classpcl_1_1_sample_consensus_model_from_normals.html#a5518bb7163a19fbc4a79d76f03742c0b">normals_</a>;</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;  };</div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160; </div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> _Scalar, <span class="keywordtype">int</span> NX=Eigen::Dynamic, <span class="keywordtype">int</span> NY=Eigen::Dynamic&gt;</div>
<div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="structpcl_1_1_functor.html">  653</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structpcl_1_1_functor.html">Functor</a></div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;  {</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    <span class="keyword">typedef</span> _Scalar Scalar;</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    <span class="keyword">enum</span> </div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    {</div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;      InputsAtCompileTime = NX,</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;      ValuesAtCompileTime = NY</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    };</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160; </div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    <span class="keyword">typedef</span> Eigen::Matrix&lt;Scalar,ValuesAtCompileTime,1&gt; ValueType;</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    <span class="keyword">typedef</span> Eigen::Matrix&lt;Scalar,InputsAtCompileTime,1&gt; InputType;</div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    <span class="keyword">typedef</span> Eigen::Matrix&lt;Scalar,ValuesAtCompileTime,InputsAtCompileTime&gt; JacobianType;</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; </div>
<div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="structpcl_1_1_functor.html#a4f39342d10edc4a4b1350f05975ffe96">  667</a></span>&#160;    <a class="code" href="structpcl_1_1_functor.html#a4f39342d10edc4a4b1350f05975ffe96">Functor</a> () : m_data_points_ (ValuesAtCompileTime) {}</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160; </div>
<div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="structpcl_1_1_functor.html#ac1f003cb9e37f3535a9032797c88195b">  672</a></span>&#160;    <a class="code" href="structpcl_1_1_functor.html#ac1f003cb9e37f3535a9032797c88195b">Functor</a> (<span class="keywordtype">int</span> m_data_points) : m_data_points_ (m_data_points) {}</div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;  </div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="structpcl_1_1_functor.html">Functor</a> () {}</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; </div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;    <span class="keywordtype">int</span></div>
<div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="structpcl_1_1_functor.html#a3f516c3ee42e37ab575b0231e0e93547">  678</a></span>&#160;    <a class="code" href="structpcl_1_1_functor.html#a3f516c3ee42e37ab575b0231e0e93547">values</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (m_data_points_); }</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160; </div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;    <span class="keyword">private</span>:</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> m_data_points_;</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;  };</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;}</div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160; </div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">//#ifndef PCL_SAMPLE_CONSENSUS_MODEL_H_</span></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a></div><div class="ttdoc">PointCloud represents the base class in PCL for storing collections of 3D points.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:173</div></div>
<div class="ttc" id="aclasspcl_1_1_progressive_sample_consensus_html"><div class="ttname"><a href="classpcl_1_1_progressive_sample_consensus.html">pcl::ProgressiveSampleConsensus</a></div><div class="ttdoc">RandomSampleConsensus represents an implementation of the RANSAC (RAndom SAmple Consensus) algorithm,...</div><div class="ttdef"><b>Definition:</b> prosac.h:57</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html">pcl::SampleConsensusModelFromNormals</a></div><div class="ttdoc">SampleConsensusModelFromNormals represents the base model class for models that require the use of su...</div><div class="ttdef"><b>Definition:</b> sac_model.h:592</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_a010f51999fde7c867ea2a6b53a7887b8"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#a010f51999fde7c867ea2a6b53a7887b8">pcl::SampleConsensusModelFromNormals::~SampleConsensusModelFromNormals</a></div><div class="ttdeci">virtual ~SampleConsensusModelFromNormals()</div><div class="ttdoc">Destructor.</div><div class="ttdef"><b>Definition:</b> sac_model.h:604</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_a3d5c831e4e7469f3b2e30ab9cad559b3"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#a3d5c831e4e7469f3b2e30ab9cad559b3">pcl::SampleConsensusModelFromNormals::getNormalDistanceWeight</a></div><div class="ttdeci">double getNormalDistanceWeight()</div><div class="ttdoc">Get the normal angular distance weight.</div><div class="ttdef"><b>Definition:</b> sac_model.h:619</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_a490b2a89f60d8fafa2c7fd6b8f761c85"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#a490b2a89f60d8fafa2c7fd6b8f761c85">pcl::SampleConsensusModelFromNormals::setNormalDistanceWeight</a></div><div class="ttdeci">void setNormalDistanceWeight(const double w)</div><div class="ttdoc">Set the normal angular distance weight.</div><div class="ttdef"><b>Definition:</b> sac_model.h:612</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_a5518bb7163a19fbc4a79d76f03742c0b"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#a5518bb7163a19fbc4a79d76f03742c0b">pcl::SampleConsensusModelFromNormals::normals_</a></div><div class="ttdeci">PointCloudNConstPtr normals_</div><div class="ttdoc">A pointer to the input dataset that contains the point normals of the XYZ dataset.</div><div class="ttdef"><b>Definition:</b> sac_model.h:645</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_a8945c93d6a5f7b436b527794888ec1be"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#a8945c93d6a5f7b436b527794888ec1be">pcl::SampleConsensusModelFromNormals::setInputNormals</a></div><div class="ttdeci">void setInputNormals(const PointCloudNConstPtr &amp;normals)</div><div class="ttdoc">Provide a pointer to the input dataset that contains the point normals of the XYZ dataset.</div><div class="ttdef"><b>Definition:</b> sac_model.h:627</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_aac33c2093acaca505d27397c0cc0af71"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#aac33c2093acaca505d27397c0cc0af71">pcl::SampleConsensusModelFromNormals::SampleConsensusModelFromNormals</a></div><div class="ttdeci">SampleConsensusModelFromNormals()</div><div class="ttdoc">Empty constructor for base SampleConsensusModelFromNormals.</div><div class="ttdef"><b>Definition:</b> sac_model.h:601</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_ae21dd06dfc1c624f72925edff6c882e4"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#ae21dd06dfc1c624f72925edff6c882e4">pcl::SampleConsensusModelFromNormals::normal_distance_weight_</a></div><div class="ttdeci">double normal_distance_weight_</div><div class="ttdoc">The relative weight (between 0 and 1) to give to the angular distance (0 to pi/2) between point norma...</div><div class="ttdef"><b>Definition:</b> sac_model.h:640</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_from_normals_html_af878ad2a4bb4badec569eb51d94d5a0d"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model_from_normals.html#af878ad2a4bb4badec569eb51d94d5a0d">pcl::SampleConsensusModelFromNormals::getInputNormals</a></div><div class="ttdeci">PointCloudNConstPtr getInputNormals()</div><div class="ttdoc">Get a pointer to the normals of the input XYZ point cloud dataset.</div><div class="ttdef"><b>Definition:</b> sac_model.h:634</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html">pcl::SampleConsensusModel</a></div><div class="ttdoc">SampleConsensusModel represents the base model class. All sample consensus models must inherit from t...</div><div class="ttdef"><b>Definition:</b> sac_model.h:67</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a19d4a467b5c0cd6267e6282ac0a2cf8c"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a19d4a467b5c0cd6267e6282ac0a2cf8c">pcl::SampleConsensusModel::max_sample_checks_</a></div><div class="ttdeci">static const unsigned int max_sample_checks_</div><div class="ttdef"><b>Definition:</b> sac_model.h:543</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a1aebacea0f2bdd7529f48f739f11c6c0"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a1aebacea0f2bdd7529f48f739f11c6c0">pcl::SampleConsensusModel::getSamplesMaxDist</a></div><div class="ttdeci">void getSamplesMaxDist(double &amp;radius)</div><div class="ttdoc">Get maximum distance allowed when drawing random samples</div><div class="ttdef"><b>Definition:</b> sac_model.h:414</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a2ac96856f60671f5d56be00a174963a8"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a2ac96856f60671f5d56be00a174963a8">pcl::SampleConsensusModel::computeVariance</a></div><div class="ttdeci">double computeVariance(const std::vector&lt; double &gt; &amp;error_sqr_dists)</div><div class="ttdoc">Compute the variance of the errors to the model.</div><div class="ttdef"><b>Definition:</b> sac_model.h:425</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a2ae178816daf4f2c7af3a19d12324b77"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a2ae178816daf4f2c7af3a19d12324b77">pcl::SampleConsensusModel::getSamples</a></div><div class="ttdeci">virtual void getSamples(int &amp;iterations, std::vector&lt; int &gt; &amp;samples)</div><div class="ttdoc">Get a set of random data samples and return them as point indices.</div><div class="ttdef"><b>Definition:</b> sac_model.h:178</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a2c2824f82edf6564ba8a0160526992f0"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a2c2824f82edf6564ba8a0160526992f0">pcl::SampleConsensusModel::getModelType</a></div><div class="ttdeci">virtual SacModel getModelType() const =0</div><div class="ttdoc">Return an unique id for each type of model employed.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a2f687798633c8e702568aea8d68b2bec"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a2f687798633c8e702568aea8d68b2bec">pcl::SampleConsensusModel::drawIndexSample</a></div><div class="ttdeci">void drawIndexSample(std::vector&lt; int &gt; &amp;sample)</div><div class="ttdoc">Fills a sample array with random samples from the indices_ vector</div><div class="ttdef"><b>Definition:</b> sac_model.h:455</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a34c480d48be740e6085e8ba59c7293ed"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a34c480d48be740e6085e8ba59c7293ed">pcl::SampleConsensusModel::projectPoints</a></div><div class="ttdeci">virtual void projectPoints(const std::vector&lt; int &gt; &amp;inliers, const Eigen::VectorXf &amp;model_coefficients, PointCloud &amp;projected_points, bool copy_data_fields=true)=0</div><div class="ttdoc">Create a new point cloud with inliers projected onto the model. Pure virtual.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a35884d269a39055c962b24d1db5fa97d"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a35884d269a39055c962b24d1db5fa97d">pcl::SampleConsensusModel::getModelSize</a></div><div class="ttdeci">unsigned int getModelSize() const</div><div class="ttdoc">Return the number of coefficients in the model.</div><div class="ttdef"><b>Definition:</b> sac_model.h:367</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a3e4708339fa0bc73aac513ddb1891a18"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a3e4708339fa0bc73aac513ddb1891a18">pcl::SampleConsensusModel::radius_min_</a></div><div class="ttdeci">double radius_min_</div><div class="ttdoc">The minimum and maximum radius limits for the model. Applicable to all models that estimate a radius.</div><div class="ttdef"><b>Definition:</b> sac_model.h:548</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a3ed94271a12d7903c0bee9091e9a8f95"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a3ed94271a12d7903c0bee9091e9a8f95">pcl::SampleConsensusModel::setRadiusLimits</a></div><div class="ttdeci">void setRadiusLimits(const double &amp;min_radius, const double &amp;max_radius)</div><div class="ttdoc">Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate...</div><div class="ttdef"><b>Definition:</b> sac_model.h:379</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a3fd6d364bc52a69c6aff54691975b7aa"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a3fd6d364bc52a69c6aff54691975b7aa">pcl::SampleConsensusModel::SampleConsensusModel</a></div><div class="ttdeci">SampleConsensusModel(const PointCloudConstPtr &amp;cloud, const std::vector&lt; int &gt; &amp;indices, bool random=false)</div><div class="ttdoc">Constructor for base SampleConsensusModel.</div><div class="ttdef"><b>Definition:</b> sac_model.h:138</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a41226f6ed6de6db5ea190f265f520fc9"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a41226f6ed6de6db5ea190f265f520fc9">pcl::SampleConsensusModel::getInputCloud</a></div><div class="ttdeci">PointCloudConstPtr getInputCloud() const</div><div class="ttdoc">Get a pointer to the input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> sac_model.h:321</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a4257edca979112fb2a7b5dfc4b824ca2"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a4257edca979112fb2a7b5dfc4b824ca2">pcl::SampleConsensusModel::countWithinDistance</a></div><div class="ttdeci">virtual int countWithinDistance(const Eigen::VectorXf &amp;model_coefficients, const double threshold)=0</div><div class="ttdoc">Count all the points which respect the given model coefficients as inliers. Pure virtual.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a490884cb22bfa92325111bd5be0bbe96"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a490884cb22bfa92325111bd5be0bbe96">pcl::SampleConsensusModel::getClassName</a></div><div class="ttdeci">const std::string &amp; getClassName() const</div><div class="ttdoc">Get a string representation of the name of this class.</div><div class="ttdef"><b>Definition:</b> sac_model.h:353</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a4b939f4747b5d6e12b03148a680380c3"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a4b939f4747b5d6e12b03148a680380c3">pcl::SampleConsensusModel::samples_radius_search_</a></div><div class="ttdeci">SearchPtr samples_radius_search_</div><div class="ttdoc">The search object for picking subsequent samples using radius search</div><div class="ttdef"><b>Definition:</b> sac_model.h:554</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a4d9b6652b63eacd8c0ae1fb3a3eafa25"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a4d9b6652b63eacd8c0ae1fb3a3eafa25">pcl::SampleConsensusModel::setIndices</a></div><div class="ttdeci">void setIndices(const boost::shared_ptr&lt; std::vector&lt; int &gt; &gt; &amp;indices)</div><div class="ttdoc">Provide a pointer to the vector of indices that represents the input data.</div><div class="ttdef"><b>Definition:</b> sac_model.h:327</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a64854cad238a0583093c446dc295f245"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a64854cad238a0583093c446dc295f245">pcl::SampleConsensusModel::sample_size_</a></div><div class="ttdeci">unsigned int sample_size_</div><div class="ttdoc">The size of a sample from which the model is computed. Every subclass should initialize this appropri...</div><div class="ttdef"><b>Definition:</b> sac_model.h:572</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a667767897fbfe615aeeb9eca8dd1b8c6"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a667767897fbfe615aeeb9eca8dd1b8c6">pcl::SampleConsensusModel::optimizeModelCoefficients</a></div><div class="ttdeci">virtual void optimizeModelCoefficients(const std::vector&lt; int &gt; &amp;inliers, const Eigen::VectorXf &amp;model_coefficients, Eigen::VectorXf &amp;optimized_coefficients)=0</div><div class="ttdoc">Recompute the model coefficients using the given inlier set and return them to the user....</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a6d23c173237ca4be1451182b9a84b3ac"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a6d23c173237ca4be1451182b9a84b3ac">pcl::SampleConsensusModel::setIndices</a></div><div class="ttdeci">void setIndices(const std::vector&lt; int &gt; &amp;indices)</div><div class="ttdoc">Provide the vector of indices that represents the input data.</div><div class="ttdef"><b>Definition:</b> sac_model.h:337</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a6fd82ae7fce7b90406608b8db249acd1"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a6fd82ae7fce7b90406608b8db249acd1">pcl::SampleConsensusModel::~SampleConsensusModel</a></div><div class="ttdeci">virtual ~SampleConsensusModel()</div><div class="ttdoc">Destructor for base SampleConsensusModel.</div><div class="ttdef"><b>Definition:</b> sac_model.h:170</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a73e9fb74bbe6ba122781c42913618756"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a73e9fb74bbe6ba122781c42913618756">pcl::SampleConsensusModel::rng_alg_</a></div><div class="ttdeci">boost::mt19937 rng_alg_</div><div class="ttdoc">Boost-based random number generator algorithm.</div><div class="ttdef"><b>Definition:</b> sac_model.h:560</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a76c5d4484f1c08a9a15f03e497296cfe"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a76c5d4484f1c08a9a15f03e497296cfe">pcl::SampleConsensusModel::computeModelCoefficients</a></div><div class="ttdeci">virtual bool computeModelCoefficients(const std::vector&lt; int &gt; &amp;samples, Eigen::VectorXf &amp;model_coefficients)=0</div><div class="ttdoc">Check whether the given index samples can form a valid model, compute the model coefficients from the...</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a7b59467495bbcc1e6ba1b69bbd6c4206"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a7b59467495bbcc1e6ba1b69bbd6c4206">pcl::SampleConsensusModel::getIndices</a></div><div class="ttdeci">boost::shared_ptr&lt; std::vector&lt; int &gt; &gt; getIndices() const</div><div class="ttdoc">Get a pointer to the vector of indices used.</div><div class="ttdef"><b>Definition:</b> sac_model.h:345</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a7bffa6777a49f1c461ee8e0960bbec01"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a7bffa6777a49f1c461ee8e0960bbec01">pcl::SampleConsensusModel::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">A boost shared pointer to the point cloud data array.</div><div class="ttdef"><b>Definition:</b> sac_model.h:537</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a7c57e94b06912d8bbf472667ba9940db"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a7c57e94b06912d8bbf472667ba9940db">pcl::SampleConsensusModel::rng_gen_</a></div><div class="ttdeci">boost::shared_ptr&lt; boost::variate_generator&lt; boost::mt19937 &amp;, boost::uniform_int&lt;&gt; &gt; &gt; rng_gen_</div><div class="ttdoc">Boost-based random number generator.</div><div class="ttdef"><b>Definition:</b> sac_model.h:566</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a81041dab94f5b0a5644697a12c4b9351"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a81041dab94f5b0a5644697a12c4b9351">pcl::SampleConsensusModel::rng_dist_</a></div><div class="ttdeci">boost::shared_ptr&lt; boost::uniform_int&lt;&gt; &gt; rng_dist_</div><div class="ttdoc">Boost-based random number generator distribution.</div><div class="ttdef"><b>Definition:</b> sac_model.h:563</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a910f3f0d75a6c2bf8bc4a9c43df825ce"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a910f3f0d75a6c2bf8bc4a9c43df825ce">pcl::SampleConsensusModel::SampleConsensusModel</a></div><div class="ttdeci">SampleConsensusModel(bool random=false)</div><div class="ttdoc">Empty constructor for base SampleConsensusModel.</div><div class="ttdef"><b>Definition:</b> sac_model.h:81</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a94696e418be704a4443b031ca18bc298"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a94696e418be704a4443b031ca18bc298">pcl::SampleConsensusModel::drawIndexSampleRadius</a></div><div class="ttdeci">void drawIndexSampleRadius(std::vector&lt; int &gt; &amp;sample)</div><div class="ttdoc">Fills a sample array with one random sample from the indices_ vector and other random samples that ar...</div><div class="ttdef"><b>Definition:</b> sac_model.h:472</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_a9b8317cdaac5ccc14e822135d4e97dc1"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#a9b8317cdaac5ccc14e822135d4e97dc1">pcl::SampleConsensusModel::shuffled_indices_</a></div><div class="ttdeci">std::vector&lt; int &gt; shuffled_indices_</div><div class="ttdef"><b>Definition:</b> sac_model.h:557</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_aa99d99ea0457237eca3b2f8e9a39022b"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#aa99d99ea0457237eca3b2f8e9a39022b">pcl::SampleConsensusModel::SampleConsensusModel</a></div><div class="ttdeci">SampleConsensusModel(const PointCloudConstPtr &amp;cloud, bool random=false)</div><div class="ttdoc">Constructor for base SampleConsensusModel.</div><div class="ttdef"><b>Definition:</b> sac_model.h:108</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_aab89218101a313d2aa8adcaf6991f73b"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#aab89218101a313d2aa8adcaf6991f73b">pcl::SampleConsensusModel::samples_radius_</a></div><div class="ttdeci">double samples_radius_</div><div class="ttdoc">The maximum distance of subsequent samples from the first (radius search)</div><div class="ttdef"><b>Definition:</b> sac_model.h:551</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_aae3b06fbee5243f926d40f8115bd406c"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#aae3b06fbee5243f926d40f8115bd406c">pcl::SampleConsensusModel::setInputCloud</a></div><div class="ttdeci">virtual void setInputCloud(const PointCloudConstPtr &amp;cloud)</div><div class="ttdoc">Provide a pointer to the input dataset</div><div class="ttdef"><b>Definition:</b> sac_model.h:304</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ab10fd6af7c7ab78040d4f638a572943f"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ab10fd6af7c7ab78040d4f638a572943f">pcl::SampleConsensusModel::model_name_</a></div><div class="ttdeci">std::string model_name_</div><div class="ttdoc">The model name.</div><div class="ttdef"><b>Definition:</b> sac_model.h:534</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ab36a50dd4848b902f2e7a75b29b78c76"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ab36a50dd4848b902f2e7a75b29b78c76">pcl::SampleConsensusModel::doSamplesVerifyModel</a></div><div class="ttdeci">virtual bool doSamplesVerifyModel(const std::set&lt; int &gt; &amp;indices, const Eigen::VectorXf &amp;model_coefficients, const double threshold)=0</div><div class="ttdoc">Verify whether a subset of indices verifies a given set of model coefficients. Pure virtual.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ab7f51bf1c63fcfb05694d0f19c2f7dc3"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ab7f51bf1c63fcfb05694d0f19c2f7dc3">pcl::SampleConsensusModel::model_size_</a></div><div class="ttdeci">unsigned int model_size_</div><div class="ttdoc">The number of coefficients in the model. Every subclass should initialize this appropriately.</div><div class="ttdef"><b>Definition:</b> sac_model.h:575</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ab8b77e6a4edb210c2ddaca923ac8470a"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ab8b77e6a4edb210c2ddaca923ac8470a">pcl::SampleConsensusModel::rnd</a></div><div class="ttdeci">int rnd()</div><div class="ttdoc">Boost-based random number generator.</div><div class="ttdef"><b>Definition:</b> sac_model.h:579</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ac38e3dc90b66bacc563605a31901ac55"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ac38e3dc90b66bacc563605a31901ac55">pcl::SampleConsensusModel::isSampleGood</a></div><div class="ttdeci">virtual bool isSampleGood(const std::vector&lt; int &gt; &amp;samples) const =0</div><div class="ttdoc">Check if a sample of indices results in a good sample of points indices. Pure virtual.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_acff95be7097cf723a598d3b28e828487"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#acff95be7097cf723a598d3b28e828487">pcl::SampleConsensusModel::getRadiusLimits</a></div><div class="ttdeci">void getRadiusLimits(double &amp;min_radius, double &amp;max_radius)</div><div class="ttdoc">Get the minimum and maximum allowable radius limits for the model as set by the user.</div><div class="ttdef"><b>Definition:</b> sac_model.h:392</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ad22a9cfdd9cf08bcf85ef1e88b62b9d2"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ad22a9cfdd9cf08bcf85ef1e88b62b9d2">pcl::SampleConsensusModel::isModelValid</a></div><div class="ttdeci">virtual bool isModelValid(const Eigen::VectorXf &amp;model_coefficients)</div><div class="ttdoc">Check whether a model is valid given the user constraints.</div><div class="ttdef"><b>Definition:</b> sac_model.h:516</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ad3de5bb66de04a4f0b3bc014a0676d48"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ad3de5bb66de04a4f0b3bc014a0676d48">pcl::SampleConsensusModel::computeVariance</a></div><div class="ttdeci">double computeVariance()</div><div class="ttdoc">Compute the variance of the errors to the model from the internally estimated vector of distances....</div><div class="ttdef"><b>Definition:</b> sac_model.h:439</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_ad45adf0e36f396a908c2ba08cfdd7a41"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#ad45adf0e36f396a908c2ba08cfdd7a41">pcl::SampleConsensusModel::indices_</a></div><div class="ttdeci">boost::shared_ptr&lt; std::vector&lt; int &gt; &gt; indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> sac_model.h:540</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_adc4ab752a4819218988ff5429b5a3c06"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#adc4ab752a4819218988ff5429b5a3c06">pcl::SampleConsensusModel::getDistancesToModel</a></div><div class="ttdeci">virtual void getDistancesToModel(const Eigen::VectorXf &amp;model_coefficients, std::vector&lt; double &gt; &amp;distances)=0</div><div class="ttdoc">Compute all distances from the cloud data to a given model. Pure virtual.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_af526982856012edcfa78ffc0fd589f97"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#af526982856012edcfa78ffc0fd589f97">pcl::SampleConsensusModel::error_sqr_dists_</a></div><div class="ttdeci">std::vector&lt; double &gt; error_sqr_dists_</div><div class="ttdoc">A vector holding the distances to the computed model. Used internally.</div><div class="ttdef"><b>Definition:</b> sac_model.h:569</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_af9aefc3c3ab13ede1430c680e9243d26"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#af9aefc3c3ab13ede1430c680e9243d26">pcl::SampleConsensusModel::selectWithinDistance</a></div><div class="ttdeci">virtual void selectWithinDistance(const Eigen::VectorXf &amp;model_coefficients, const double threshold, std::vector&lt; int &gt; &amp;inliers)=0</div><div class="ttdoc">Select all the points which respect the given model coefficients as inliers. Pure virtual.</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_af9eea9dd0e12e1de8671ac542400d3f1"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#af9eea9dd0e12e1de8671ac542400d3f1">pcl::SampleConsensusModel::setSamplesMaxDist</a></div><div class="ttdeci">void setSamplesMaxDist(const double &amp;radius, SearchPtr search)</div><div class="ttdoc">Set the maximum distance allowed when drawing random samples</div><div class="ttdef"><b>Definition:</b> sac_model.h:403</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_model_html_aff175b4323080fe1a3ca98a76ca4da46"><div class="ttname"><a href="classpcl_1_1_sample_consensus_model.html#aff175b4323080fe1a3ca98a76ca4da46">pcl::SampleConsensusModel::getSampleSize</a></div><div class="ttdeci">unsigned int getSampleSize() const</div><div class="ttdoc">Return the size of a sample from which the model is computed.</div><div class="ttdef"><b>Definition:</b> sac_model.h:360</div></div>
<div class="ttc" id="astructpcl_1_1_functor_html"><div class="ttname"><a href="structpcl_1_1_functor.html">pcl::Functor</a></div><div class="ttdef"><b>Definition:</b> sac_model.h:654</div></div>
<div class="ttc" id="astructpcl_1_1_functor_html_a3f516c3ee42e37ab575b0231e0e93547"><div class="ttname"><a href="structpcl_1_1_functor.html#a3f516c3ee42e37ab575b0231e0e93547">pcl::Functor::values</a></div><div class="ttdeci">int values() const</div><div class="ttdoc">Get the number of values.</div><div class="ttdef"><b>Definition:</b> sac_model.h:678</div></div>
<div class="ttc" id="astructpcl_1_1_functor_html_a4f39342d10edc4a4b1350f05975ffe96"><div class="ttname"><a href="structpcl_1_1_functor.html#a4f39342d10edc4a4b1350f05975ffe96">pcl::Functor::Functor</a></div><div class="ttdeci">Functor()</div><div class="ttdoc">Empty Constructor.</div><div class="ttdef"><b>Definition:</b> sac_model.h:667</div></div>
<div class="ttc" id="astructpcl_1_1_functor_html_ac1f003cb9e37f3535a9032797c88195b"><div class="ttname"><a href="structpcl_1_1_functor.html#ac1f003cb9e37f3535a9032797c88195b">pcl::Functor::Functor</a></div><div class="ttdeci">Functor(int m_data_points)</div><div class="ttdoc">Constructor</div><div class="ttdef"><b>Definition:</b> sac_model.h:672</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_c7755524a431c11f03a79f7e7a55c8ae.html">sample_consensus</a></li><li class="navelem"><a class="el" href="dir_b55b0e205bfb15fa747ee4a5d787a677.html">include</a></li><li class="navelem"><a class="el" href="dir_5944596cfcc9d4d5387c59e693bd10b7.html">pcl</a></li><li class="navelem"><a class="el" href="dir_6a81d93b3ecec65392154f05b2284644.html">sample_consensus</a></li><li class="navelem"><b>sac_model.h</b></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
